package licode.unisop.provider.vo;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 定义资源信息（仅仅保存资源ID）
 *
 * @author licode
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SiAssetBrief {
    /**
     * 资源ID
     */
    private String id;

    /**
     * 根资源ID
     */
    private String rootId;

    /**
     * 父资源
     */
    private String parentId;

    /**
     * 资源名称
     */
    private String name;

    /**
     * 资源编码
     */
    private String code;

    /**
     * 资源项类型（参考AssetType）
     */
    private String type;

    /**
     * 资源子类型
     */
    private String subType;

    /**
     * 资源分类（HOLD、TREE、GROUP、GROUP_TREE、NORMAL）
     */
    private String classify;

    /**
     * 资源排序
     */
    private Integer level;

    /**
     * 状态（参考AssetState）
     */
    private Integer state;

    /**
     * 其它属性
     */
    private SiProps props;

    /**
     * 是否系统资源（1：系统资源）
     */
    private Integer isSystem;

    public boolean hasProps() {
        return (null != props && !props.isEmpty());
    }

    public String getString(String name, String defVal) {
        return (null == props ? defVal : props.getString(name, defVal));
    }

    public Long getLong(String name, Long defVal) {
        return (null == props ? defVal : props.getLong(name, defVal));
    }

    public Double getDouble(String name, Double defVal) {
        return (null == props ? defVal : props.getDouble(name, defVal));
    }

    public Object getValue(String name) {
        return (null == props ? null : props.getValue(name));
    }
}
